export type SortOrder = 'asc' | 'desc';
export type OrderField = 'name' | 'size' | 'mtime';
export type LogLevel = 'debug' | 'info' | 'warn' | 'error' | 'none';
export type LogFormat = 'simple' | 'json' | 'combined';

/**
 * 服务器配置接口
 */
export interface ServerConfig {
  // 服务器端口
  port: number;
  // 静态文件目录
  directory: string;
  // 是否启用压缩
  compress: boolean;
  // 是否启用CORS
  cors: boolean;
  // 缓存时间（秒）
  cacheMaxAge: number;
  // 代理规则
  proxyRules: Record<string, string>;
  // 是否自动打开浏览器
  openBrowser: boolean;

  // 目录浏览页配置
  directoryBrowsing: {
    // 是否启用目录浏览
    enabled: boolean;
    // 页面标题模板，支持 {path} 变量
    title: string;
    // 是否显示文件/目录图标
    showIcons: boolean;
    // 是否显示文件统计信息
    showStats: boolean;
    // 是否显示页脚
    showFooter: boolean;
    // 页脚文本，为空则使用默认文本
    footerText: string;
    // 自定义CSS
    customCSS: string;
    // 排序规则: name, size, mtime
    sortBy: OrderField;
    // 排序方向: asc, desc
    sortOrder: SortOrder;
    // 是否显示隐藏文件
    showHiddenFiles: boolean;
  };

  // 错误页面配置
  errorPages: {
    // 自定义404页面的路径，相对于服务目录
    notFound: string;
    // 自定义500页面的路径，相对于服务目录
    serverError: string;
  };

  // 日志配置
  logging: {
    // 日志级别
    level: LogLevel;
    // 是否输出到文件
    outputToFile: boolean;
    // 日志文件路径
    filePath: string;
    // 日志格式: simple, json, combined
    format: LogFormat;
    // 是否显示彩色日志
    colorize: boolean;
  };

  // 安全配置
  security: {
    // 是否启用基本认证
    basicAuth: {
      enabled: boolean;
      username: string;
      password: string;
    };
    // HTTPS配置
    https: {
      enabled: boolean;
      // 证书文件路径，相对于当前工作目录
      cert: string;
      // 密钥文件路径，相对于当前工作目录
      key: string;
    };
  };
}

/**
 * 请求统计接口
 */
export interface RequestStat {
  path: string;
  method: string;
  statusCode: number;
  responseTime: number;
  size: number;
  timestamp: Date;
  ip: string;
  userAgent?: string;
}

/**
 * 中间件选项接口
 */
export interface MiddlewareOptions {
  serverConfig: ServerConfig;
  logger: any;
}
